#如何创建一个新的函数，以方便以后重新调用【用到函数function、var、length、sqrt、mean、sum、unlist、if、for、cat、\n】


#查询是否已有存在的函数，否则会出现隐藏问题（假设创建函数名为se）
se
#给出错误信息说明此应用可以使用，反之不可
#创建方法一
se <- function(x){
  v <- var(x)
  n <- length(x)
  return(sqrt(v/n))#任何返回值都可以使用函数return()确定，或返回函数最后运算表达式的结果
}
#通用的方法给函数名赋值
function(<set of parameters>) { set of R instruction> }
#调用检验
se(c(45,2,3,5,76,2,4))
#运用有默认值的参数的 一个例子。
basic.stats <- function(x,more=F) {
  stats <- list()
  
  clean.x <- x[!is.na(x)]
  
  stats$n <- length(clean.x)
  stats$nNAs <- stats$n-length(clean.x)
  
  stats$mean <- mean(clean.x)
  stats$std <- sd(clean.x)
  stats$med <- median(clean.x)
  if(more){
    stats$skew <- sum(((clean.x-stats$mean)/stats$std)^3)/length(clean.x)
    stats$kurt <- sum(((clean.x-stats$mean)/stats$std)^4)/length(clean.x)-3
  }
  unlist(stats)
}
#此函数的一个参数（或多个）有默认值F，这意味着调用该函数是可以设置或者不设置该参数，如果调用该函数是没有设定第二个参数值，那么该参数将引用他的默认值。有两个方法：
basic.stats(c(45,2,4,46,43,65,NA,6,-213,-3,-45))
basic.stats(c(45,2,4,46,43,65,NA,6,-213,-3,-45),more = T)
#for()循环
f <- function(x){
  for(i in i:10){#循环10次，每次i去不同值，in后面的值可以是任意向量，不必是序列或者数值型
    res <- x*i
    cat(x,'*',i,'=',res,'\n')#cat()用于多个对象的内容输出到屏幕。\n换行输出
  }
}